iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0
自我挑戰組

環島C一下自己的人生系列 第 24

[Day24]整數的交集聯集

  • 分享至 

  • xImage
  •  

整數的交集聯集

請設計程式,利用兩個一維整數陣列儲存兩個正整數集合 A, B ,
兩個集合 A, B 的陣列大小為 20,正整數 1~100;
程式功能為:
(1) 新增集合元素:輸入一集合與一正整數,若新增的元素與該集合內元素有重複,
則無法新增。
(2) 刪除集合元素:輸入一集合與一正整數,若集合中無該元素,無法刪除。
(3) 計算集合是否空集合。
(4) 計算兩個集合的交集。
(5) 計算兩個集合的聯集。
(6) 計算集合是否為另一個集合的子集合。


輸入說明:

每一行第一數字輸入整數指令選項,意義如下:
0: 結束exit
1: 清空 A,輸出 A 和 B 的內容。
2: 清空 B,輸出 A 和 B 的內容。
3: 新增元素到 A,後面接一個正整數為要插入的元素,
輸出 A 和 B 的內容。
4: 新增元素到 B,後面接一個正整數為要新增的元素,
輸出 A 和 B 的內容。
5: 從 A 刪除一個元素,後面接一個正整數為要刪除的元素,
輸出 A 和 B 的內容。
6: 從 B 刪除一個元素,後面接一個正整數為要刪除的元素。
輸出 A 和 B 的內容。
7: 輸出 A, B 聯集。comm
8: 輸出 A, B 交集。
9: 輸出 A 是否為 B 的子集合,若是則輸出 1 ,否則輸出 0。

輸出說明:

輸出集合格式
集合名稱:[集合元素,集合元素,...],中間沒有空白,
元素順序依照輸入先後順序。
交集與聯集的元素順序,先以A的元素順序再以B的元素順序。
每一指令輸出一行。
空集合為所有集合的子集合


Input:
3 4
3 7
4 8
4 9
5 4
6 8
3 8
7
8
9
0

Output:
A:[4,]B:[]
A:[4,7,]B:[]
A:[4,7,]B:[8,]
A:[4,7,]B:[8,9,]
A:[7,]B:[8,9,]
A:[7,]B:[9,]
A:[7,8,]B:[9,]
[7,8,9,]
[]
0

#include <stdio.h>

int main(){
    int c,d,a[20],b[20],ai=0,bj=0,j=0,k=0,err=0,e=1,g=0;
    while(1){
        scanf("%d",&c);
        if(c==0)
            break;
        else if (c==1){
            printf("A:[]");
            printf("B:[");
            for(j=0;j<ai;j++){
                a[j]=0;
            }
            for(j=0;j<bj;j++){
                printf("%d,",b[j]);
            }
            printf("]\n");
            ai=0;
        }
        else if(c==2){
            printf("A:[");
            for(j=0;j<bj;j++){
                b[j]=0;
            }
            for(j=0;j<ai;j++){
                printf("%d,",a[j]);
            }
            printf("]");
            printf("B:[]\n");
            bj=0;
        }
        else if(c==3){
            scanf("%d",&d);
            for(j=0;j<ai;j++){
                if(a[j]==d){
                    break;
                }
            }
            if(j==ai){
                a[ai]=d;
                ai++;
            }
            printf("A:[");
            for(j=0;j<ai;j++){
                printf("%d,",a[j]);
            }
            printf("]B:[");
            for(j=0;j<bj;j++){
                printf("%d,",b[j]);
            }
            printf("]\n");
        }
        else if(c==4){
            scanf("%d",&d);
            for(j=0;j<bj;j++){
                if(d==b[j]){
                    break;
                }
            }
            if(j==bj){
                b[bj]=d;
                bj++;
            }
            printf("A:[");
            for(j=0;j<ai;j++){
                printf("%d,",a[j]);
            }
            printf("]B:[");
            for(j=0;j<bj;j++){
                printf("%d,",b[j]);
            }
            printf("]\n");
        }
        else if(c==5){
            scanf("%d",&d);
            for(j=0;j<ai;j++){
                if(d==a[j]){
                    ai--;
                    break;
                }
            }
            for(k=j;k<ai;k++){
                a[k]=a[k+1];
            }

            printf("A:[");
            for(j=0;j<ai;j++){
                printf("%d,",a[j]);
            }
            printf("]B:[");
            for(j=0;j<bj;j++){
                printf("%d,",b[j]);
            }
            printf("]\n");
        }
        else if(c==6){
            scanf("%d",&d);
            for(j=0;j<bj;j++){
                if(b[j]==d){
                    bj--;
                    break;
                }
            }
            for(k=j;k<bj;k++){
                b[k]=b[k+1];
            }

            printf("A:[");
            for(j=0;j<ai;j++){
                printf("%d,",a[j]);
            }
            printf("]B:[");
            for(j=0;j<bj;j++){
                printf("%d,",b[j]);
            }
            printf("]\n");
        }
        else if(c==7){
            printf("[");
            for(j=0;j<ai;j++){
                printf("%d,",a[j]);
            }
            for(k=0;k<bj;k++){
                for(j=0;j<ai;j++){
                    if(b[k]==a[j]){
                        err=1;
                        break;
                    }
                }
                if(err==1)
                    err=0;
                else
                    printf("%d,",b[k]);
            }
            printf("]\n");
        }
        else if(c==8){
            printf("[");
            for(j=0;j<ai;j++){
                for(k=0;k<bj;k++){
                    if(a[j]==b[k]){
                        printf("%d,",a[j]);
                        break;
                    }
                }
            }
            printf("]\n");
        }
        else if(c==9){
            if(ai==0){
                printf("1\n");
            }
            else{
                for(k=0;k<bj;k++){
                    for(j=0;j<ai;j++){
                        if(a[j]==b[k]){
                            g++;
                            break;
                        }
                    }
                }
                if(g==ai){
                        printf("1\n");
                        }
                    else if(g!=ai){
                        g=0;
                       printf("0\n");
                    }
            }
        }
    }
}


上一篇
[Day23]找出規律-2
系列文
環島C一下自己的人生24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言